package org.dromara.bclt.websocket.mapper;

import org.apache.ibatis.annotations.Param;
import org.dromara.bclt.websocket.domain.ChatMessage;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;

import java.util.Date;
import java.util.List;

/**
 * 聊天消息数据库操作接口
 */
public interface ChatMapper extends BaseMapperPlus<ChatMapper, ChatMessage> {

    /**
     * 插入聊天消息
     *
     * @param chatMessage 聊天消息
     * @return 影响行数
     */
    int insertChatMessage(ChatMessage chatMessage);

    /**
     * 查询用户间的聊天历史记录
     *
     * @param userId1 用户1ID
     * @param userId2 用户2ID
     * @param limit   记录数量
     * @return 聊天记录列表
     */
    List<ChatMessage> selectChatHistory(@Param("userId1") Long userId1, @Param("userId2") Long userId2, @Param("limit") Integer limit);

    /**
     * 将消息标记为已读
     *
     * @param senderId   发送者ID
     * @param receiverId 接收者ID
     * @param readTime   阅读时间
     * @return 更新记录数
     */
    int updateMessageRead(@Param("senderId") Long senderId, @Param("receiverId") Long receiverId, @Param("readTime") Date readTime);

    /**
     * 查询用户未读消息数量
     *
     * @param receiverId 接收者ID
     * @return 未读消息数量
     */
    int selectUnreadCount(@Param("receiverId") Long receiverId);
}
